﻿namespace CatClient.Message.Spi
{
    using CatClient.Message;
    using System;

    public interface IMessageProducer
    {
        string CreateMessageId();
        void LogError(Exception cause);
        void LogEvent(string type, string name, string status, string nameValuePairs);
        void LogHeartbeat(string type, string name, string status, string nameValuePairs);
        void LogMetric(string name, string status, string nameValuePairs);
        void LogTrace(string type, string name, string status, string nameValuePairs);
        IAsyncForkedTransaction NewAsyncForkedTransaction(string type, string name);
        IEvent NewEvent(string type, string name);
        IForkedTransaction NewForkedTransaction(string type, string name);
        IHeartbeat NewHeartbeat(string type, string name);
        IMetric NewMetric(string type, string name);
        ITaggedTransaction NewTaggedTransaction(string type, string name, string tag);
        ITrace NewTrace(string type, string name);
        ITransaction NewTransaction(string type, string name);
    }
}

